package com.sky.utils;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

@Data
@AllArgsConstructor  //自动生成全部参数的构造函数 所以不用写了
@Slf4j
public class LocalFileUtil {

    private final String basePath; // 本地存储的根目录


    /**
     * 文件上传
     * @param bytes      文件字节内容
     * @param objectName 文件名
     * @return 文件的本地访问路径
     */
    public String upload(byte[] bytes, String objectName) {
        // 确保目标目录存在
        File directory = new File(basePath);
        if (!directory.exists() && !directory.mkdirs()) {
            log.error("无法创建目录: {}", basePath);
            throw new RuntimeException("无法创建目标目录");
        }

        // 目标文件
        File targetFile = new File(directory, objectName);

        try (FileOutputStream fos = new FileOutputStream(targetFile)) {
            fos.write(bytes);
        } catch (IOException e) {
            log.error("文件上传失败: {}", e.getMessage(), e);
            throw new RuntimeException("文件上传失败", e);
        }

        log.info("文件上传到: {}", targetFile.getAbsolutePath());

        // 返回 HTTP 访问路径  否则前端没有办法访问 浏览器安全策略
//        return "/upload/" + objectName;
        return "http://127.0.0.1:8080/upload/" + objectName;  //写死 实际运行的时候 不需要这样 直接返回地址即可
    }
}
